// 递归
// 本质是：解决主问题时，发现相同子问题，解决主问题和子问题的方法相同 (主问题有可能就是子问题)
// 心理暗示：宏观看待递归问题，把递归函数当成黑盒，相信这个黑盒一定能完成任务
// 技巧：
//      找到重复子问题 -> 设计函数头
//      子问题是如何解决的 -> 函数体的书写
//      注意递归函数的出口 -> 关注问题不能分割的情况
// 拓展：如果一个题目可以用决策树画出来，那么也可以通过递归解决

// 例题 4：
// 给你一个链表，两两交换其中相邻的节点，并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题（即，只能进行节点交换）。
//
//        示例 1：
//
//
//        输入：head = [1,2,3,4]
//        输出：[2,1,4,3]
//        示例 2：
//
//        输入：head = []
//        输出：[]
//        示例 3：
//
//        输入：head = [1]
//        输出：[1]
//
//
//        提示：
//
//        链表中节点的数目在范围 [0, 100] 内
//        0 <= Node.val <= 100

// 解题思路：
// 先逆置前两个节点，把后面交换完成的链表尾插在前两个节点后面

public class SwapPairs {

}
